import logging
import os.path

import openpyxl

from base.os_utils import get_env_param


def read_test_case_data():
    """
    读取测试用例数据,将is_true字段列的值是true的用例一行封装成一个字段读取出来,所有字典再放入一个列表中,作为pytest的参数化数据传入
    :return: 返回一个列表,列表中的每个元素是一个字典,字典中描述读取到的字段与值的信息
    """
    logging.info(f"开始读取[{get_env_param('pro_root_path') + get_env_param('excel_name')}]表格,[{get_env_param('sheet_name')}]sheet页中的测试数据")

    workbook = openpyxl.load_workbook(get_env_param('pro_root_path') + get_env_param('excel_name'))

    worksheet = workbook[get_env_param('sheet_name')]

    keys = [cell.value for cell in worksheet[2]]
    data = []

    # 循环获取表中的数值 从第3行开始  values_only=true是开启取值,row是每行的数据内容
    for row in worksheet.iter_rows(min_row=3,values_only=True):
        temp_dict = dict(zip(keys, row))
        data.append(temp_dict)

    workbook.close()
    logging.info("读取到的原始测试数据:")
    for one_data in data:
        logging.info(one_data)
    return data

if __name__=="__main__":
    print(read_test_case_data())
